EC2インスタンスへのシェルアクセスサービスを雑にまとめてみた
過去1年の間にEC2インスタンスにシェルアクセスするAWSサービスが3つもリリースされました。
- AWS Systems Manager Session Manager(2018/09/11)
- EC2 Instance Connect(2019/06/27)
- AWS Systems Manager Session Manager(SSHトンネリング対応)(2019/07/09)
機能が似通っていており、違いがわかりにくいため、ざっと整理しました。
シェルアクセスの比較表
サービス | 素のSSH | Systems Manager Session Manager | Systems Manager Session Manager(SSH) | EC2 Instance Connect |
---|---|---|---|---|
概要 | SSHクライアントを使って、インスタンスに接続。 | インスタンスにシェルアクセス。 アクセス制御にはIAMポリシーを使用。 ログイン処理が行われないため、ログイン処理が行われないため、一部独特な動き |
SSM Session Manageセッション上にSSHトンネルを作成。 アクセス制御にはIAMポリシーを使用。 |
SSHクライアントを使ってインスタンスに接続。 SSHキーは接続ごとに登録し、60秒だけ有効。 アクセス制御にはIAMポリシーを使用。 |
ドキュメント | url | url | url | url |
ブログ | - | url | url | url |
プロトコル | SSH | HTTPS | SSH over HTTPS | SSH |
SSHキー管理 | 必要 | 不要 | 必要 | 必要 |
(接続時に都度作成・登録) | ||||
認証 | SSH | IAM | IAM+SSH | IAM+SSH |
CloudTrail履歴 | - | 残る | 残る | 残る |
セッション操作履歴 | - | 残る | - | - |
コンソール・アクセス | - | 可能 | 可能 | 可能 |
コマンドライン・アクセス | 可能 | 可能 | 可能 | 可能 |
プライベートサブネット | 踏み台経由 | 可能 | 可能 | 踏み台経由 |
インバウンドポート管理 | SSH用ポートをあける | 不要 | 不要 | SSH用ポートをあける |
クライアント要件 | SSH | AWS CLI Session Managerプラグイン |
SSH AWS CLI Session Managerプラグイン |
SSH AWS CLI EC2 Instance Connect CLI |
サーバー要件 | SSH | SSH SSM Agent |
SSH SSM Agent |
OS:Amazon Linux 2/Ubuntu 16.04+ SSH |
ユースケース別おすすめ
プライベートサブネットのインスタンスにも接続したい
Systems Manager Session Manager 系 を採用すると、踏み台サーバーを経由せずに接続可能です。
アウトバウンドのSSH通信が禁止されている
HTTP(S) 通信のみで可能な Systems Manager Session Manager 系をご利用ください。
SSH 版 Session Manager も HTTPS ベースの Session Manager セッション上で実現されており、クライアントがサーバーと直接 SSH 通信しているわけではありません(なのでSSH用インバウンドポートを開けなくて良い)。
番外編として、パブリックサブネットに踏み台用 AppStream 2.0インスタンスを起動し、そこから各サーバーに接続することも可能です。HTTPS 通信のみを利用します。
シェルの操作履歴を残したい
Systems Manager Session Manager(非SSH)を利用すると、操作履歴を CloudWatch/S3 に残す事ができます。
ファイル転送が必要
シェルアクセスだけでなく、サーバーとファイルの送受信をしたい場合、SSH 系ソリューションをご利用ください。
SSHトンネリングが必要
クライアント環境からVPCのプライベートサブネットにあるRDSに接続したい時があるかもしれません。
そのようなときは、SSH 系ソリューションで SSH トンネルを堀り、ポートフォワードをご利用ください。
永続的なSSHキーを使いたくない
永続的なSSHキーを使いたくない場合
- Systems Manager Session Manager(非SSH) (IAM 認証)
- EC2 Instance Connect (ラッパー CLI の mssh を使うと、毎回新規SSHキーを作成&登録)
をご利用ください。
Red Hat で利用したい
EC2 Instance Connect は Red Hat に対応していないため、Systems Manager Session Manager 系をご利用ください。
最後に
AWS が提供する3種類のEC2へのシェルアクセスサービス
- AWS Systems Manager Session Manager
- AWS Systems Manager Session Manager(SSHトンネリング)
- EC2 Instance Connect
の違いを整理しました。
要件に応じて使い分けていただければと思います。